package info.papdt.pano.support; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import java.util.ArrayList; import java.util.List; public class BitmapUtility { /*public static Bitmap bitmapThresholding(Bitmap originalBmp, int threshold) { Bitmap bmp = toGrayscale(originalBmp); Bitmap out = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.RGB_565); for (int x = 0; x < bmp.getWidth(); x++) { for (int y = 0; y < bmp.getWidth(); y++) { int color = Color.red(bmp.getPixel(x, y)); if (color < threshold) { out.setPixel(x, y, Color.rgb(0, 0, 0)); } else { out.setPixel(x, y, Color.rgb(255, 255, 255)); } } } return out; } public static int calculateThresholdValue(Bitmap originalBmp) { Bitmap bmp = toGrayscale(originalBmp); int T = 128; int Ts = 127; while (T != Ts) { T = Ts; int T1 = 0; int T2 = 0; int G1 = 0; int G2 = 0; int G1_count = 0; int G2_count = 0; for (int x = 0; x < bmp.getWidth(); x++) { for (int y = 0; y < bmp.getWidth(); y++) { int color = Color.red(bmp.getPixel(x, y)); if (color < T) { G1 += color; G1_count++; } else { G2 += color; G2_count++; } } } T1 = G1 / G1_count; T2 = G2 / G2_count; Ts = (T1 + T2) / 2; } return T; }*/ public static Bitmap toGrayscale(Bitmap bmpOriginal) { int width, height; height = bmpOriginal.getHeight(); width = bmpOriginal.getWidth(); Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(bmpGrayscale); Paint paint = new Paint(); ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0); ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm); paint.setColorFilter(f); c.drawBitmap(bmpOriginal, 0, 0, paint); return bmpGrayscale; } }